package com.youxiake.lock;

import java.util.concurrent.TimeUnit;

/**
 * @author jxbai
 * @date 2021/12/17
 * 1.标准访问有ab两个线程，请问先打印邮件还是短信
 * 2.sendEmail方法暂停3秒钟，请问先打印邮件还是短信
 * 3.新增一个普通的hello方法，请问先打印邮件还是hello
 * 4.有两部手机，请问先打印邮件还是短信
 * 5.两个静态同步方法，同1部手机，请问先打印邮件还是短信
 * 6.两个静态同步方法， 2部手机，请问先打印邮件还是短信
 * 7.1个静态同步方法，1个普通同步方法,同1部手机，请问先打印邮件还是短信
 * 8.1个静态同步方法，1个普通同步方法,2部手机，请问先打印邮件还是短信
 *
 */
public class Synchronized8Demo {

    public static void main(String[] args) {
        Phone phone1 = new Phone();
        Phone phone2 = new Phone();

        new Thread(() -> {
            phone1.sendEmail();
        }, "a").start();

        try {
            TimeUnit.MILLISECONDS.sleep(300);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        new Thread(() -> {
//            phone1.sendSMS();
//            phone1.hello();
            phone2.sendSMS();
        }, "b").start();
    }
}

class Phone {
    public static synchronized void sendEmail() {
        //暂停几秒钟线程
        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) { e.printStackTrace(); }
        System.out.println("-------sendEmail");
    }

    public synchronized void sendSMS() {
        System.out.println("-------sendSMS");
    }

    public void hello() {
        System.out.println("-------hello");
    }
}